1. Field of the Invention
The invention relates to the field of printer control and in particular, to methods and systems for integrating job control and synchronization of printer controller processes with exchanges over the data paths between the various printer controller processes.
2. Statement of the Problem
Present day printing systems typically include a local printer controller that performs a number of functions within the printing system. In particular, a printer controller typically includes features for interaction with attached host systems wherein application programs generate data forwarded to the printer to be presented on appropriate print media (e.g., cut sheet or continuous feed paper). Another function of the print controller is to process any such received data to generate corresponding page images representing the received data on the printed media. Typically, such host generated data includes textual information and/or rasterized image information to be presented to a user on the printable media. The printer controller is therefore principally responsible for receiving data encoded in raw form and for converting the received raw data into rendered or rasterized printed pages. The rendered image information is then passed from the print controller to a marking engine to mark appropriate pixels on the printable media to represent the received raw print data on the printed page.
Typical print controllers therefore include a number of distinct processes operable on one or more processors of the printer controller. For example, a first process may be responsible for interacting with the host systems to receive the print data generated by host system applications. One or more other processes may then be responsible for rasterizing or rendering page images from the received, encoded print data. Still other processes may be responsible for transferring the rasterized or rendered page images to the marking engine for eventual presentation on the printable media. Still other processes may be responsible for interaction with the print operator to manage overall operation of the printing system as it relates to the eventual presentation of rasterized print jobs.
Each of these processes plays some role in the processing of received print jobs from attached host systems. A print job may therefore move between a number of different processes and may exist in a number of different states as processing continues through each of the multiple processes. For example, a raw print job generated by a host system may be received from a host system by a first process within the printer controller and may be stored or spooled in that raw form. The spooled print job may then be forwarded to an appropriate translator or rasterizer for the particular language or encoding of the received print job. Alternatively, the received print job may be sent directly from the receiving process to a translator or rasterizer appropriate for the particular print job encoding.
One or more appropriate rasterizers may be involved in processing a particular print job when the print job incorporates multiple languages or encodings. For example, a single print job may include PCL encoded information as well as Postscript encoded information. Therefore, portions of the print data receives from a host system may be directed to a first translator while other portions may be directed to other translators among the plurality of processes within the printer controller.
Still further, the output generated by such translators or rasterizers is generally page images to then be further formatted into appropriate positions on one or both sides of sheets of the printable media. Still other processes within the printer controller handle such formatting processing to place the rasterized page images into appropriate positions on one or more sides of the printable media. Still other processes within the printer controller may handle certain advanced print languages such as IBM's Intelligent Presentation Data System (“IPDS”). An IPDS translator may receive the raw print data and more fully control operation of the printing system during all phases of processing of the received IPDS data.
Clearly coordination and synchronization of such multiple processes operable within a printer controller is an ongoing problem for printer controller designs. It is desirable that the various processes are allowed to proceed largely independent of one another through queue structures used to couple the various processes so that each process may proceed at its optimum speed regardless of the speed of processing of other processes within the printer controller. Simultaneously, it is important to maintain a level of control and synchronization among such a plurality of substantially independent processes to assure that all print data is processed in an orderly manner and that print jobs are eventually printed in a logical, controlled order.
Further, a printer operator or administrative user may wish to alter the normal sequencing of such print job processing and thus may need to impose still further synchronization and control operations among the various processes within the printer controller based on such user interactions.
To achieve such synchronization and control, all processes within the printer controller may be designed to operate in complete lockstep such that a single print job is processed at any given time from beginning to end. In such a lockstep design a print operator or administrative user would have little capability to redefine the synchronization or control of the printing operation to achieve the desired goal for the printing enterprise. Further, since various processes may operate at different speeds, the computational capabilities of the printer controller may be underutilized in that all print job processing would be performed at the speed of the slowest processing process of the multiple processes within the printer controller. Computational processing power within the printer controller may therefore go underutilized in such a lockstep design.
Other known techniques to aid in synchronization and control while allowing substantial concurrent processing among the plurality of processes provide for complex messaging systems. In such complex messaging systems, the various processes exchange synchronization and control information outside of the normal print data processing data communication paths of the various multiple processes of the printer controller. Such an additional, independent, communication path among the various processes of the printer controller generates significant complexity and hence associated costs in the architecture of the printer controller. Further, since the synchronization and control related messaging communication is separate and independent from the data paths associated with the processing of print data, synchronization for certain types of events relating to the print data per se is still further complicated. For example, identifying the beginning or end of a particular document, a particular job, or a particular page description language to be processed may be overly complicated when the synchronization and control communications are totally separate and distinct from the print data processing data paths of the various processes.
It is evident from the above discussion that a need exists to simplify and improve processing of synchronization and control information within a printer controller to permit flexible synchronization and control of print jobs while still allowing significant concurrent processing of multiple such print jobs within a printer controller to thereby better utilize available computational power of the printer controller.